home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / EMULATOR / MAME34 / CHEAT.DOC < prev    next >
Text File  |  1997-11-13  |  24KB  |  621 lines

  1.                           Cheats In MAME
  2.                           ==============
  3.  
  4. What Is This?
  5. =============
  6.  
  7. I know that using cheats will probably spoil a game, but I did
  8. this because there are many games that I want to see the endings
  9. of, but never will if I have to play several weeks to finish them.
  10.  
  11. It is also very useful for driver writers, like me, because it
  12. allows me to see all the levels of a game without having to play
  13. them.  It is very frustrating to play a game you do not really like,
  14. all night, just to pass the first level because someone tells you
  15. that there is a bug in your driver that appears on the second level.
  16.  
  17. The cheat system in MAME operates much like the Pro Action Replay.
  18. You can use cheats found by others, or you can try to find new
  19. cheats yourself.
  20.  
  21. The file CHEAT.DAT contains cheats that I, and others, have found.
  22. This file is in standard text format, so you can see or edit it with
  23. a standard text editor like Notepad.
  24.  
  25. You might want to read the file just to have an idea of what cheats
  26. are available. That is a lot faster than trying all the games one
  27. after another.
  28.  
  29.  
  30. Operation
  31. =========
  32.  
  33. - Start a game in MAME, passing the "-cheat" parameter on the
  34.   command line.
  35.  
  36. - After the game's self test has completed (and you have started
  37.   playing), press <TAB> to go to the menu.
  38.  
  39.   Note: it is important that you do not enable any cheats before the
  40.         self tests have completed, otherwise the tests will probably
  41.         fail and the game will not start.  (The tests are the garbage
  42.         you see when most games start up.)
  43.  
  44. - Select "CHEAT" on the menu.
  45.  
  46. - You should see:
  47.  
  48.    Load And/Or Enable A Cheat
  49.     Start A New Cheat Search
  50.         Continue  Search
  51.           Memory Watch
  52.       
  53.       Return To Main Menu
  54.  
  55.         Active Cheats:
  56.          --- None ---
  57.  
  58. - The first line allows you to select and enable a cheat.  The other
  59.   three lines are used when searching for new cheats.  The "Return To Main
  60.   Menu" is obvious.
  61.  
  62.   Below that, you have a list of the currently active cheats.  The first
  63.   time you bring up this menu there will be no cheats active and it will
  64.   show "--- None ---" to indicate that.
  65.  
  66. - Select "Load And/Or Enable A Cheat".
  67.  
  68. - The upper part of the screen lists the cheats that are currently
  69.   available.  This is where you can select the cheat you want to enable.
  70.  
  71. - The lower part is a list of the currently enabled cheats.
  72.  
  73. - If nothing appears between the lines "Select a Cheat" and "Active
  74.   Cheats", then no cheats are available for the current game.
  75.  
  76. - To enable a cheat, select it using the arrow keys, and use <ENTER> to
  77.   enable it.  The name of the cheat should now appear in the "Active
  78.   Cheats" list.
  79.  
  80. - Pressing <ENTER> on a cheat that is already in the "Active Cheats"
  81.   list will remove it from the "Active Cheats" list (disables the cheat).
  82.  
  83. - <DELETE>, <F1>, <F3> and <INS> are used when you are searching for your
  84.   own cheats, or editing a cheat.
  85.  
  86.   Note: pressing <DELETE> does not delete that cheat from the CHEAT.DAT
  87.         file, it just deletes it from the list in memory.
  88.  
  89.         Pressing <F1> on a cheat will save it to the CHEAT.DAT file.
  90.         Pressing <F1> on a cheat that is already in the file will save it
  91.         again (it will be duplicated in the file).
  92.  
  93.         Pressing <INS> will insert an new "empty" Cheat into the Cheat List.
  94.  
  95.         To remove a cheat from the file, you will have to edit the
  96.         CHEAT.DAT file and remove it.
  97.  
  98. - Press <F10> to see a view the Help.
  99.  
  100. - Press <ESC> or <TAB> three times to return to the game.
  101.  
  102. - Start a game, you should see the cheat's effects.
  103.  
  104. - During the game, if you have to temporarilly disable all cheats,
  105.   press <F7>.  (See the MAME docs, as this key might have been changed.)
  106.  
  107.  
  108. *NOTE*: Enabling a cheat, *even for a short time*, will disable the
  109.         hi-score saving for that MAME session.  If you want to reenable
  110.         hi-score saving, you will have to restart MAME.
  111.  
  112.         The "Memory Watch" option is described below.
  113.  
  114.  
  115. How To Search For New Cheats
  116. ============================
  117.  
  118. What can you search for?  You can search for anything that happens
  119. during a game.  The idea of a cheat is to replace a value, at a specific
  120. location in memory, with a different value.
  121.  
  122. (Using cheat function #0, explained later) the game will not be able to
  123. change that value while the cheat is active.  So, if you know the
  124. memory location where the "lives remaining" are kept, placing a value of
  125. "3" at that location will make the game think that you always have 3 lives
  126. remaining.  You now, in effect, have unlimited lives.
  127.  
  128. The easiest cheats (values) to find are lives or other numbers that you
  129. can see on the screen.  You can also search for values that determine
  130. how you have a certain ability, and lengthen (or shorten!) the time you
  131. have the ability.
  132.  
  133. In 1942, when you perform a loop, you are invincible during the time you
  134. are in the loop.  So you can search to have that invincibility during the
  135. entire game.
  136.  
  137. In Pacman, you can search for a code that keeps the ghosts blue during
  138. the entire game.
  139.  
  140. Here is how you start searching for cheat codes.  (More later on what to
  141. do with them.)
  142.  
  143. There are 5 methods available to search for cheat codes.  Each of them
  144. has specific advantages, and with practice you will learn which one to
  145. use depending on what it is you are searching for.
  146.  
  147. Also, from the "Start A New Cheat Search" menu, you can bring up help to
  148. detail the search methods available.
  149.  
  150. Here is a description of the methods and an example of how to use them.
  151.  
  152. - Method #1 is used to search for a known number and follow its value.
  153.   It is good for lives or other numbers.  Here are the steps to find the
  154.   lives value in (Namco) Dig Dug.
  155.  
  156.   - Start MAME.
  157.  
  158.   - Start a game.
  159.  
  160.   - Go to the cheat menu, and select "Start A New Cheat Search".
  161.  
  162.   - Select "Lives or other number".
  163.  
  164.   - With the arrow keys, enter the number of lives you had at the bottom
  165.     of the screen while in the game.  (Normally 2, but that depends on
  166.     the DIP Switch settings.)  Then press <ENTER>.
  167.  
  168.   - Return to the game.
  169.  
  170.   - Die.
  171.  
  172.   - Go to the cheat menu, and select "Continue Search".
  173.  
  174.   - Enter the number of lives you now have left.  (Normally 1.)
  175.  
  176.   - The program will display all the locations that match your search
  177.     criteria.  If you have performed the search properly,and starting
  178.     with 2 lives, you should see 2 entrys:
  179.         840A = 02
  180.         840C = 02
  181.     It means that the locations $840A and $840C had the value of 2 in
  182.     them when you started the search, and have the value of 1 in them
  183.     now.  (We will try to narrow the list down to 1 entry.)
  184.  
  185.   - Return to the game
  186.  
  187.   - Die again.
  188.  
  189.   - Go to the cheat menu, and select "Continue Search" again.
  190.  
  191.   - Enter the number of lives you have left.  (Normally 0.)
  192.  
  193.   - The list is the same, so now we will try to find which is the good
  194.     one.
  195.  
  196.   - Press <F2> to copy all entries into the "Loaded Cheat" list, Or press
  197.     <ENTER> on each of them to add them one by one.
  198.  
  199.   - Press <ESC> or <TAB>.
  200.  
  201.   - Select "Load And/Or Enable A Cheat".
  202.     
  203.   - You should see your 2 entries in the upper list.
  204.     
  205.   - Select the first entry (840A) press <ENTER> to copy it to the "Active
  206.     Cheat list".
  207.     
  208.   - Return to the game.
  209.     
  210.   - Die.  Since it was your last life your game should end, but it does
  211.     not end: it is a good code.  (What was the other code for?  Let's
  212.     try it and see.)
  213.     
  214.   - Go to the cheat menu, and select "Load And/Or Enable A Cheat".
  215.     
  216.   - Press <ENTER> on the 840A entry to remove it from the "Active
  217.     Cheat List".
  218.     
  219.   - Press <ENTER> on the 840C entry to copy it into the "Active Cheat
  220.     List".
  221.     
  222.   - Return to the game.
  223.     
  224.   - Die.  It does the same thing of the other cheat code.  It just so
  225.     happens that in this game, there are 2 locations in memory that
  226.     contain the lives remaining.  So either one should good.
  227.     
  228.   - Return to the "Load And/Or Enable A Cheat" menu
  229.     
  230.   - Select the 840A or 840C entry, and press <F1> to save it in the
  231.     CHEAT.DAT file.  It will be saved with a cheat name of "840A = 02"
  232.     (or "840C = 02).
  233.     
  234.   - Although the cheat system can edit cheat information, I will ask you
  235.     to edit the CHEAT.DAT file and give the cheat a more meaningful
  236.     description.  (See below "How To Use The Cheat Editor")
  237.     The last line of the file should be:
  238.  
  239.         digdugnm:0:840A:2:0:840A = 02
  240.  
  241.         (While you are there, you can change the 2, in the fourth
  242.         field, to a "6" so you will see 5 or 6 lives at the bottom of
  243.         the screen when you will activate this cheat.)  Give the cheat
  244.         a more meaningful description (30 characters max).  When you
  245.         are finished, the line should look something like:
  246.  
  247.         digdugnm:0:840A:6:0:Infinite Lives
  248.  
  249.   - From now on when you will start (Namco) Dig Dug you will have
  250.     "Infinite Lives" in the list of cheats available for that game.
  251.  
  252.   Note: With lives remaining, you can have 3 values: the number of
  253.         lives displayed or the number displayed + 1 which is the real
  254.         number of lives you have, or possibly the number of lives
  255.         displayed - 1!  Because of that, the method #1 will
  256.         search for the number you enter and the number - 1.
  257.  
  258.  
  259. - Method #2 looks for locations that have changed by a specific value
  260.   since the last time you checked.
  261.  
  262.   This method is good for timers, lives, energy, money, and level
  263.   searches. Note that this search is not performed in reference to a
  264.   start value like the other methods.
  265.  
  266.   I did it this way because I think it is easier to tell the cheat system
  267.   that you lose a life, and another one, or that a value has incremented
  268.   by 1 or 2 since the last time instead of telling it in reference to a
  269.   start value that you lost 1 life, then 2, then 3.  Here is an example:
  270.  
  271.   - Start a game with 3 lives.
  272.  
  273.   - Go to the cheat menu, and initialize the search.  This will save a
  274.     copy of the game's memory.
  275.  
  276.   - Go back to the game, and lose a life.
  277.  
  278.   - Go to the cheat menu, and search for a value that has changed by -1
  279.     since the search was initialized.
  280.  
  281.   - Go back to the game, and lose another life.
  282.  
  283.   - Go to the cheat menu, and search for a value that has changed again
  284.     by -1 since the last search.  Each time you do this, the
  285.     cheat system will save the game's memory, and display the memory
  286.     locations that match your search criteria.
  287.  
  288.  
  289. - Method #3 is used to search for an "energy bar" or any other value
  290.   that you can tell has changed, or has not changed.  Therefore, you
  291.   search for values that are greater than, less than, or equal to the
  292.   last value.  Note that this search is not performed relative to a
  293.   starting value, but relative to the last time you continued the
  294.   search.  (The first time uses the starting value, of course.)
  295.   
  296.   For example, we will try to find the "energy bar" in the game "Kung
  297.   Fu Master":
  298.   
  299.   - Start a game in Kung Fu Master.  (Wait a little bit for the game
  300.     to actually start.  When you can start to move, your "Energy Bar"
  301.     will be full.)
  302.  
  303.   - Go to the cheat menu, and select "Start A New Cheat Search".
  304.  
  305.   - Select "Energy (Greater Or Less)".  (This will initialize the search.)
  306.   
  307.   - Return to the game, and wait for an enemy to "grab" you.  This will
  308.     cause your "energy bar" to decrease.
  309.   
  310.   - Go the the cheat menu, and select "Continue Search".
  311.   
  312.   - Select "New value is smaller".  (Because your "energy bar" as
  313.     decreased in value.)
  314.   
  315.   - Return to the game for just a little bit so that your "energy bar"
  316.     decreases a little more.
  317.  
  318.   - Go the the cheat menu, and select "Continue Search".
  319.   
  320.   - Select "New value is smaller".  (Because your "energy bar" as
  321.     decreased in value again.)
  322.   
  323.   - Return to the game for just a little bit so that your "energy bar"
  324.     decreases a little more.
  325.  
  326.   - Go the the cheat menu, and select "Continue Search".
  327.   
  328.   - Select "New value is smaller".  (Because your "energy bar" as
  329.     decreased in value yet again.)
  330.  
  331.   - At this point, you should have less than 10 entries.  But we are
  332.     are going to try to narrow it down even more.
  333.  
  334.   - Return to the game, and let your player die (or get killed).  When
  335.     you player restarts, you will now have a full "energy bar".
  336.  
  337.   - Go the the cheat menu, and select "Continue Search".
  338.   
  339.   - Select "New value is greater".  (Because your "energy bar" is
  340.     now full.)
  341.  
  342.   - Return to the game, briefly.  Do not let your player lose any energy!
  343.   
  344.   - Go the the cheat menu, and select "Continue Search".
  345.   
  346.   - Select "New value is equal".  (Because your "energy bar" is the 
  347.     same as before.)
  348.   
  349.   - Aha!  At this point, you should have 2 entries left.  Press <F2> to
  350.     register them in the list.
  351.  
  352.   - After a little more experimentation, you will see that the first
  353.     address (E709) is the good one (where your energy is stored), while
  354.     the second address (E81A) is used for displaying the "energy bar".
  355.  
  356.     Try it!  If you set the wrong address, your "energy bar" will show
  357.     full, but you will still die!
  358.  
  359.  
  360. - Method #4 is used to search for a status bit (or flag).  This method
  361.   is good to search for temporary invincibility and weapon status.
  362.  
  363.   In 1942 you are invincible when you perform a looping, we will try to
  364.   search for that state.  Here is an example (using 1942):
  365.  
  366.   - Start a game.
  367.   
  368.   - Perform a loop.
  369.   
  370.   - While looping, go to the cheat menu, and select "START NEW SEARCH".
  371.   
  372.   - Return to the game.
  373.   
  374.   - When the loop is finished, wait a little while...
  375.   
  376.   - Go to the cheat menu, and select "CONTINUE SEARCH".
  377.   
  378.   - Select "Opposite from start".
  379.   
  380.   - Return to the game.
  381.   
  382.   - Perform a loop.
  383.   
  384.   - While in the loop, go to the cheat menu, and select "CONTINUE
  385.     SEARCH".
  386.   
  387.   - Select "Same as start".
  388.   
  389.   - Repeat as many times as required to narrow the list down.  (After
  390.     about 10 times I had 6 entries.)
  391.   
  392.   Follow the procedure above and you should find that E0A5 = 02 (memory
  393.   location E0A5, set to a value of 2) is the cheat for invincibility.
  394.  
  395.  
  396. - Method #5 is used as last resort. The cheat system will search for a
  397.   byte that is the same or different from when you first started
  398.   (initialized the search). It is very much like method #4 but since it
  399.   will search for a whole byte, you will get different results with this
  400.   method.
  401.  
  402.  
  403. How To Use The Memory Watch
  404. ===========================
  405.  
  406. The memory watch allows you to "keep an eye on" specific memory
  407. locations.  The memory watch will display (at the top of the game
  408. screen) the contents of up to 10 memory locations that you specify.
  409.  
  410. After selecting the cheat menu, and selecting "Memory Watch", you can
  411. select up to ten addresses to watch.  If the address reads "FFFF", it
  412. is disabled, and no value will be shown for that address.
  413.  
  414. Using the up and down Arrow keys, select which watch you want to
  415. activate.
  416.  
  417. Using the right and left arrow keys, and <+> and <-> on the keypad,
  418. select the address that you wish to watch.  You can use the <1>, <2>,
  419. <3> and <4> keys to increment the value in the first, second, third,
  420. and fourth columns.
  421.  
  422. Hitting <ENTER> will copy the value from the previous entry.  Hitting
  423. <DELETE> will disable the value (set it to FFFF).
  424.  
  425. The <I>, <J>, <K> and <L> keys are used to change the location of where
  426. the watches are shown.  You must have at least one watch enabled in
  427. order to see this effect.
  428.  
  429. The watches take effect as soon as you enable them.
  430.  
  431. You can also enable a watch from the "Load And/Or Enable A Cheat" Cheat
  432. List.
  433.  
  434. Watches do NOT modify any memory.  They only show it to you.  Therefore,
  435. you can have watches enabled while a game is running it's self-test
  436. without affecting the self-test.
  437.  
  438. (Watches can also be enabled from the "Load And/Or Enable A Cheat" screen.
  439. This way, you can observe what value that a potential cheat will modify,
  440. to see if it is the one that you are looking for.)
  441.  
  442. As as example, suppose that you have found 6 locations that could
  443. contain "lives remaining".  Rather than patching each location one at a
  444. time, you could just put a watches on the 6 locations, and see which one
  445. changes.
  446.  
  447.  
  448. How To Use The Cheat Editor
  449. ===========================
  450.  
  451. The Cheat editor allows you to modify the properties of any cheat that is
  452. loaded into the Cheat List.  Once in the editor, you can change the
  453. Name, CPU, Address, Value and Type of the cheat.  This prevents you from
  454. having to go into the CHEAT.DAT file to change any settings.
  455.  
  456. The Cheat Editor, coupled with the ability to insert a new cheat into the
  457. Cheat List, and the Memory Watcher, greatly simplifies searching for and
  458. creating new cheats.
  459.  
  460. The Cheat Editor uses right and left arrow keys, and <+> and <-> on the
  461. keypad to change the values of the cheat.  You can also use the <1>, <2>,
  462. <3> and <4> keys to increment the value in the first, second, third,
  463. and fourth columns, if available.
  464.  
  465. Help is available for the Cheat Editor, and can be brought up by hitting
  466. <F10>.  The help system will explain all of the features.
  467.  
  468.  
  469. Tips
  470. ====
  471.  
  472. When searching for lives, after telling the cheat system the number of
  473. lives you have remaining a few times, progressing the search, you will
  474. probably have a list of 1 or 2 entries.  But when searching for a
  475. Status bit, you will probably be stuck with a list of more than 10 or
  476. 20 entries.  When you see that you cannot narrow down the list any more,
  477. try the following:
  478.  
  479.   - When you have the list on the screen, press <F2> to copy them all to
  480.     the "Loaded List".  (The limit of the "Loaded List" is 100 entries.)
  481.  
  482.   - Back up, and select "Load And/Or Enable A Cheat".
  483.   
  484.   - You see your list there.  Enable some of them (5 to 10).  (You
  485.     cannot have more than 10 cheats enabled at the same time.)
  486.  
  487.   - Go back to the game to see what effect this has.
  488.   
  489.   - If there is no noticeable effect, or if the effect is not what you
  490.     where searching for:
  491.     - Return to the "Load And/Or Enable A Cheat" screen.
  492.     
  493.     - Delete the entries that you previously enabled using <DELETE>.
  494.       (Deleting a code from the upper list also deletes it from the 
  495.       "Active List".  Remember, deleting a cheat from the upper list
  496.       does not affect the CHEAT.DAT file, so you may delete existing
  497.       cheat codes to have more space.)
  498.  
  499.     - Enable some other codes, and return to the game to see what
  500.       happens.
  501.  
  502.   - When you have the effect you want in the game, you can be sure that
  503.     the cheat code is one of the ones that you enabled, so enable them
  504.     one at the time to find the correct code.
  505.  
  506.   - When you have found a code that you want to keep, select it in the
  507.     "Loaded List", and press <F1> to save it in the CHEAT.DAT file.
  508.  
  509.  
  510. When looking for cheats, be aware that a game may keep the same value in
  511. two locations.  The Kung Fu Master example above shows this.  It is
  512. possible for a game to keep the number if lives remaining in one
  513. location in its RAM, but use the same value on screen someplace.
  514.  
  515. For example, if you are working with a game that shows a "3" on the
  516. screen when you have 3 lives remaining, you might find two different
  517. memory locations that both change (and are the same value) whenever you
  518. gain and lose a life.
  519.  
  520.  
  521. If you are using a type of "infinite <something" cheat, be aware that
  522. some games, like Kung Fu Master, and Yie-ar Kung Fu use your remaining
  523. energy, at the end of a level, as a bonus.  If you do not disable the
  524. cheat at this time, your bonus will go on forever!  You can use <F7> to
  525. disable cheats at this time, and then reenable them after the next level
  526. begins.
  527.  
  528.  
  529. If you have any special knowledge about a game, like its Memory Map,
  530. you can automatically throw out any locations that you know are not in
  531. the games RAM area(s).  Examining the source code to the MAME drivers
  532. can help get you this information.
  533.  
  534.  
  535. Notes
  536. =====
  537.  
  538. While in the game, press <~> (might be the <`> key) to go directly to
  539. the "Continue Cheat" page.  (See the MAME docs, as this key might have
  540. been changed.)
  541.  
  542. To find a certain cheat, you may want to reset the emulation with <F3>.
  543. This will not affect the state of the current search and may be useful
  544. if you want to start a new game and retry the same actions with a few
  545. slight changes.  (Note that a game might fail it's self test if the
  546. self test is performed while a cheat is active.)
  547.  
  548. Normally, for cheats like Infinite Lives, Put a larger-than-usual
  549. number so that the player will see an abnormal number of lives.  This
  550. will remind him/her that he/she has a cheat enabled.
  551.  
  552.  
  553. CHEAT.DAT file description
  554. ==========================
  555.  
  556. Lines that start with a semicolon (;) are comments.
  557.  
  558. A cheat code consists of a line of 5 fields separated by a colon (:),
  559. in this format: 
  560.   
  561.   digdugnm:0:840A:6:0:Infinite Lives
  562.  
  563.   <Name>:<CPU>:<Addr>:<Data>:<Type>:<Desc>
  564.  
  565.   <Name>: The (short) name of the game.  This is the same as the name of
  566.           the game that you use on the MAME command line.
  567.  
  568.   <CPU>:  Which CPU (for games with multiple CPUs).  Always "0" in this
  569.           version of the cheat system.
  570.  
  571.   <Addr>: The memory location to apply the value at, in Hexadecimal.
  572.  
  573.   <Data>: The data to put at the memory location, in Hexadecimal.
  574.  
  575.   <Type>: Type Of Cheat.  Usually "0".  Here is a list of the types:
  576.              0: Write cheat data into RAM each video frames.
  577.              1: Write cheat data into RAM once, and then delete cheat
  578.                 from the "Active List".
  579.              2: Wait one second between writes of cheat data to RAM.
  580.              3: Wait two seconds between writes of cheat data to RAM.
  581.              4: Wait five seconds between writes of cheat data to RAM.
  582.              5: When the original value in RAM is not like the cheat
  583.                 data, wait one second then write cheat data to RAM.
  584.                 (Used by Tempest for the Super Zapper cheat.)
  585.              6: When the original value in RAM is not like the cheat
  586.                 data, wait two seconds then write cheat data to RAM.
  587.              7: When the original value in RAM is not like the cheat
  588.                 data, wait five seconds then write cheat data to RAM.
  589.              8: If the original value in RAM is being decremented by
  590.                 1 each frame, do not write the cheat data to RAM.
  591.                 Otherwise, write the cheat data to RAM.
  592.                 (This cheat type, and the next 3 that follow, are used
  593.                 to prevent games, that countdown values at a certain
  594.                 point, from counting down forever.  Kung Fu Master is
  595.                 one example.  Note what happens at the end of a level.)
  596.              9: If the original value in RAM is being decremented by
  597.                 2 each frame, do not write the cheat data to RAM.
  598.                 Otherwise, write the cheat data to RAM.
  599.              10:If the original value in RAM is being decremented by
  600.                  3 each frame, do not write the cheat data to RAM.
  601.                 Otherwise, write the cheat data to RAM.
  602.              11:If the original value in RAM is being decremented by
  603.                 4 each frame, do not write the cheat data to RAM.
  604.                 Otherwise, write the cheat data to RAM.
  605.  
  606.              (I do not know if types 8 - 11 will be useful. I hope so. It
  607.              works for some games, like Kung Fu Master, but not for
  608.              others, like Rally X.  More research is being done to fix this
  609.              problem.)
  610.  
  611.   <Desc>: The description (30 characters max).
  612.  
  613. Have fun!
  614.  
  615.  
  616.     Marc Lafontaine
  617.     marclaf@sympatico.ca
  618.     http://www3.sympatico.ca/marclaf
  619.  
  620. (Edited by James R. Twine, jtwine@bettynet.com)
  621.